Remove GtkLayout
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 2 Apr 2019 14:25:02 +0000 (15:25 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 2 Apr 2019 14:29:20 +0000 (15:29 +0100)
The need of a specialised fixed layout container that can be placed into
a GtkScrolledWindow ceased to exist once GtkScrolledWindow gained the
ability to automatically interpose a GtkViewport when adding a child
that does not implement GtkScrollable.

All the other justifications that led to the existence of GtkLayout as a
separate widget from GtkFixed have been largely made irrelevant in the
20 years since its inception.

docs/reference/gtk/gtk4-docs.xml
docs/reference/gtk/gtk4-sections.txt
gtk/gtk-autocleanups.h
gtk/gtk.h
gtk/gtkfixed.c
gtk/gtklayout.c [deleted file]
gtk/gtklayout.h [deleted file]
gtk/meson.build
tests/testgtk.c
testsuite/gtk/defaultvalue.c

index af8c97afd02ef475dcf14b53edb195f4efa8dd6d..c1018bf53c15a2eaaef35d611274f99ac505186a 100644 (file)
@@ -92,7 +92,6 @@
       <xi:include href="xml/gtkheaderbar.xml" />
       <xi:include href="xml/gtkoverlay.xml" />
       <xi:include href="xml/gtkpaned.xml" />
-      <xi:include href="xml/gtklayout.xml" />
       <xi:include href="xml/gtknotebook.xml" />
       <xi:include href="xml/gtkexpander.xml" />
       <xi:include href="xml/gtkorientable.xml" />
index 167a16ee62cc952911f11d6c9cbc8dfc6928eb9b..b2098ded5c3437a5a93f2dd1b4d86b9fc4161774 100644 (file)
@@ -1739,27 +1739,6 @@ GtkLabelPrivate
 GtkLabelSelectionInfo
 </SECTION>
 
-<SECTION>
-<FILE>gtklayout</FILE>
-<TITLE>GtkLayout</TITLE>
-GtkLayout
-gtk_layout_new
-gtk_layout_put
-gtk_layout_move
-gtk_layout_set_size
-gtk_layout_get_size
-<SUBSECTION Standard>
-GTK_LAYOUT
-GTK_IS_LAYOUT
-GTK_TYPE_LAYOUT
-GTK_LAYOUT_CLASS
-GTK_IS_LAYOUT_CLASS
-GTK_LAYOUT_GET_CLASS
-<SUBSECTION Private>
-GtkLayoutPrivate
-gtk_layout_get_type
-</SECTION>
-
 <SECTION>
 <FILE>gtklinkbutton</FILE>
 <TITLE>GtkLinkButton</TITLE>
index 5ccb245539087cb5e3f2a189c38e9ee85e300622..edd4664b4001f029b6daf882be1bc6d312102e0d 100644 (file)
@@ -101,7 +101,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkIconTheme, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkIconView, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkImage, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkInfoBar, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLayout, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLevelBar, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkLinkButton, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkListStore, g_object_unref)
index ac96a1581036a5602b9a7ff4df6db1305ce365c1..bb637b522a38f38806bfa52b4bfffa1c9b267c13 100644 (file)
--- a/gtk/gtk.h
+++ b/gtk/gtk.h
 #include <gtk/gtkimmulticontext.h>
 #include <gtk/gtkinfobar.h>
 #include <gtk/gtklabel.h>
-#include <gtk/gtklayout.h>
 #include <gtk/gtklayoutmanager.h>
 #include <gtk/gtklayoutchild.h>
 #include <gtk/gtklevelbar.h>
index 1935de78a1a4de12b198a95ae9b527a56817e4ff..e41c887cb3c44a06906056f8747534e6478398eb 100644 (file)
@@ -66,9 +66,6 @@
  * If you know none of these things are an issue for your application,
  * and prefer the simplicity of #GtkFixed, by all means use the
  * widget. But you should be aware of the tradeoffs.
- *
- * See also #GtkLayout, which shares the ability to perform fixed positioning
- * of child widgets and additionally adds custom drawing and scrollability.
  */
 
 #include "config.h"
diff --git a/gtk/gtklayout.c b/gtk/gtklayout.c
deleted file mode 100644 (file)
index 074bdae..0000000
+++ /dev/null
@@ -1,816 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * GtkLayout: Widget for scrolling of arbitrary-sized areas.
- *
- * Copyright Owen Taylor, 1998
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#include "config.h"
-
-#include "gtklayout.h"
-
-#include "gdk/gdk.h"
-
-#include "gtkadjustment.h"
-#include "gtkintl.h"
-#include "gtkmarshalers.h"
-#include "gtkprivate.h"
-#include "gtkscrollable.h"
-
-
-/**
- * SECTION:gtklayout
- * @Short_description: Infinite scrollable area containing child widgets
- *   and/or custom drawing
- * @Title: GtkLayout
- * @See_also: #GtkDrawingArea, #GtkFixed
- *
- * #GtkLayout is similar to #GtkDrawingArea in that it’s a “blank slate” and
- * doesn’t do anything except paint a blank background by default. It’s
- * different in that it supports scrolling natively due to implementing
- * #GtkScrollable, and can contain child widgets since it’s a #GtkContainer.
- *
- * If you just want to draw, a #GtkDrawingArea is a better choice since it has
- * lower overhead. If you just need to position child widgets at specific
- * points, then #GtkFixed provides that functionality on its own.
- */
-
-
-typedef struct _LayoutChild   LayoutChild;
-
-typedef struct
-{
-  /* Properties */
-  guint width;
-  guint height;
-
-  GtkAdjustment *hadjustment;
-  GtkAdjustment *vadjustment;
-
-  /* GtkScrollablePolicy needs to be checked when
-   * driving the scrollable adjustment values */
-  guint hscroll_policy : 1;
-  guint vscroll_policy : 1;
-
-  /* Properties */
-  GList *children;
-} GtkLayoutPrivate;
-
-struct _LayoutChild {
-  GtkWidget *widget;
-  gint x;
-  gint y;
-};
-
-enum {
-   PROP_0,
-   PROP_HADJUSTMENT,
-   PROP_VADJUSTMENT,
-   PROP_HSCROLL_POLICY,
-   PROP_VSCROLL_POLICY,
-   PROP_WIDTH,
-   PROP_HEIGHT
-};
-
-enum {
-  CHILD_PROP_0,
-  CHILD_PROP_X,
-  CHILD_PROP_Y
-};
-
-static void gtk_layout_get_property       (GObject        *object,
-                                           guint           prop_id,
-                                           GValue         *value,
-                                           GParamSpec     *pspec);
-static void gtk_layout_set_property       (GObject        *object,
-                                           guint           prop_id,
-                                           const GValue   *value,
-                                           GParamSpec     *pspec);
-static void gtk_layout_finalize           (GObject        *object);
-static void gtk_layout_measure (GtkWidget *widget,
-                                GtkOrientation  orientation,
-                                int             for_size,
-                                int            *minimum,
-                                int            *natural,
-                                int            *minimum_baseline,
-                                int            *natural_baseline);
-static void gtk_layout_size_allocate      (GtkWidget      *widget,
-                                           int             width,
-                                           int             height,
-                                           int             baseline);
-static void gtk_layout_add                (GtkContainer   *container,
-                                          GtkWidget      *widget);
-static void gtk_layout_remove             (GtkContainer   *container,
-                                           GtkWidget      *widget);
-static void gtk_layout_forall             (GtkContainer   *container,
-                                           GtkCallback     callback,
-                                           gpointer        callback_data);
-static void gtk_layout_set_child_property (GtkContainer   *container,
-                                           GtkWidget      *child,
-                                           guint           property_id,
-                                           const GValue   *value,
-                                           GParamSpec     *pspec);
-static void gtk_layout_get_child_property (GtkContainer   *container,
-                                           GtkWidget      *child,
-                                           guint           property_id,
-                                           GValue         *value,
-                                           GParamSpec     *pspec);
-static void gtk_layout_adjustment_changed (GtkAdjustment  *adjustment,
-                                           GtkWidget      *widget);
-
-static void gtk_layout_set_hadjustment_values (GtkLayout      *layout);
-static void gtk_layout_set_vadjustment_values (GtkLayout      *layout);
-
-G_DEFINE_TYPE_WITH_CODE (GtkLayout, gtk_layout, GTK_TYPE_CONTAINER,
-                         G_ADD_PRIVATE (GtkLayout)
-                        G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL))
-
-/* Public interface
- */
-/**
- * gtk_layout_new:
- * @hadjustment: (allow-none): horizontal scroll adjustment, or %NULL
- * @vadjustment: (allow-none): vertical scroll adjustment, or %NULL
- * 
- * Creates a new #GtkLayout. Unless you have a specific adjustment
- * you’d like the layout to use for scrolling, pass %NULL for
- * @hadjustment and @vadjustment.
- * 
- * Returns: a new #GtkLayout
- **/
-  
-GtkWidget*    
-gtk_layout_new (GtkAdjustment *hadjustment,
-               GtkAdjustment *vadjustment)
-{
-  GtkLayout *layout;
-
-  layout = g_object_new (GTK_TYPE_LAYOUT,
-                        "hadjustment", hadjustment,
-                        "vadjustment", vadjustment,
-                        NULL);
-
-  return GTK_WIDGET (layout);
-}
-
-static void
-gtk_layout_set_hadjustment_values (GtkLayout *layout)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  GtkAllocation  allocation;
-  GtkAdjustment *adj = priv->hadjustment;
-  gdouble old_value;
-  gdouble new_value;
-  gdouble new_upper;
-
-  gtk_widget_get_allocation (GTK_WIDGET (layout), &allocation);
-
-  old_value = gtk_adjustment_get_value (adj);
-  new_upper = MAX (allocation.width, priv->width);
-
-  g_object_set (adj,
-                "lower", 0.0,
-                "upper", new_upper,
-                "page-size", (gdouble)allocation.width,
-                "step-increment", allocation.width * 0.1,
-                "page-increment", allocation.width * 0.9,
-                NULL);
-
-  new_value = CLAMP (old_value, 0, new_upper - allocation.width);
-  if (new_value != old_value)
-    gtk_adjustment_set_value (adj, new_value);
-}
-
-static void
-gtk_layout_set_vadjustment_values (GtkLayout *layout)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  GtkAllocation  allocation;
-  GtkAdjustment *adj = priv->vadjustment;
-  gdouble old_value;
-  gdouble new_value;
-  gdouble new_upper;
-
-  gtk_widget_get_allocation (GTK_WIDGET (layout), &allocation);
-
-  old_value = gtk_adjustment_get_value (adj);
-  new_upper = MAX (allocation.height, priv->height);
-
-  g_object_set (adj,
-                "lower", 0.0,
-                "upper", new_upper,
-                "page-size", (gdouble)allocation.height,
-                "step-increment", allocation.height * 0.1,
-                "page-increment", allocation.height * 0.9,
-                NULL);
-
-  new_value = CLAMP (old_value, 0, new_upper - allocation.height);
-  if (new_value != old_value)
-    gtk_adjustment_set_value (adj, new_value);
-}
-
-static void
-gtk_layout_finalize (GObject *object)
-{
-  GtkLayout *layout = GTK_LAYOUT (object);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  g_object_unref (priv->hadjustment);
-  g_object_unref (priv->vadjustment);
-
-  G_OBJECT_CLASS (gtk_layout_parent_class)->finalize (object);
-}
-
-static void
-gtk_layout_set_hadjustment (GtkLayout     *layout,
-                            GtkAdjustment *adjustment)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  if (adjustment && priv->hadjustment == adjustment)
-        return;
-
-  if (priv->hadjustment != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->hadjustment,
-                                            gtk_layout_adjustment_changed,
-                                            layout);
-      g_object_unref (priv->hadjustment);
-    }
-
-  if (adjustment == NULL)
-    adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-
-  g_signal_connect (adjustment, "value-changed",
-                    G_CALLBACK (gtk_layout_adjustment_changed), layout);
-  priv->hadjustment = g_object_ref_sink (adjustment);
-  gtk_layout_set_hadjustment_values (layout);
-
-  g_object_notify (G_OBJECT (layout), "hadjustment");
-}
-
-static void
-gtk_layout_set_vadjustment (GtkLayout     *layout,
-                            GtkAdjustment *adjustment)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  if (adjustment && priv->vadjustment == adjustment)
-        return;
-
-  if (priv->vadjustment != NULL)
-    {
-      g_signal_handlers_disconnect_by_func (priv->vadjustment,
-                                            gtk_layout_adjustment_changed,
-                                            layout);
-      g_object_unref (priv->vadjustment);
-    }
-
-  if (adjustment == NULL)
-    adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
-
-  g_signal_connect (adjustment, "value-changed",
-                    G_CALLBACK (gtk_layout_adjustment_changed), layout);
-  priv->vadjustment = g_object_ref_sink (adjustment);
-  gtk_layout_set_vadjustment_values (layout);
-
-  g_object_notify (G_OBJECT (layout), "vadjustment");
-}
-
-static LayoutChild *
-get_child (GtkLayout  *layout,
-           GtkWidget  *widget)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  GList *children;
-
-  children = priv->children;
-  while (children)
-    {
-      LayoutChild *child;
-
-      child = children->data;
-      children = children->next;
-
-      if (child->widget == widget)
-        return child;
-    }
-
-  return NULL;
-}
-
-/**
- * gtk_layout_put:
- * @layout: a #GtkLayout
- * @child_widget: child widget
- * @x: X position of child widget
- * @y: Y position of child widget
- *
- * Adds @child_widget to @layout, at position (@x,@y).
- * @layout becomes the new parent container of @child_widget.
- * 
- **/
-void           
-gtk_layout_put (GtkLayout     *layout, 
-               GtkWidget     *child_widget, 
-               gint           x, 
-               gint           y)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  LayoutChild *child;
-
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-  g_return_if_fail (GTK_IS_WIDGET (child_widget));
-
-  child = g_new (LayoutChild, 1);
-
-  child->widget = child_widget;
-  child->x = x;
-  child->y = y;
-
-  priv->children = g_list_append (priv->children, child);
-
-  gtk_widget_set_parent (child_widget, GTK_WIDGET (layout));
-}
-
-static void
-gtk_layout_move_internal (GtkLayout       *layout,
-                          GtkWidget       *widget,
-                          gboolean         change_x,
-                          gint             x,
-                          gboolean         change_y,
-                          gint             y)
-{
-  LayoutChild *child;
-
-  child = get_child (layout, widget);
-
-  g_assert (child);
-
-  gtk_widget_freeze_child_notify (widget);
-  
-  if (change_x)
-    {
-      child->x = x;
-      gtk_widget_child_notify (widget, "x");
-    }
-
-  if (change_y)
-    {
-      child->y = y;
-      gtk_widget_child_notify (widget, "y");
-    }
-
-  gtk_widget_thaw_child_notify (widget);
-  
-  if (gtk_widget_get_visible (widget) &&
-      gtk_widget_get_visible (GTK_WIDGET (layout)))
-    gtk_widget_queue_resize (widget);
-}
-
-/**
- * gtk_layout_move:
- * @layout: a #GtkLayout
- * @child_widget: a current child of @layout
- * @x: X position to move to
- * @y: Y position to move to
- *
- * Moves a current child of @layout to a new position.
- * 
- **/
-void           
-gtk_layout_move (GtkLayout     *layout, 
-                GtkWidget     *child_widget, 
-                gint           x, 
-                gint           y)
-{
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-  g_return_if_fail (GTK_IS_WIDGET (child_widget));
-  g_return_if_fail (gtk_widget_get_parent (child_widget) == GTK_WIDGET (layout));
-
-  gtk_layout_move_internal (layout, child_widget, TRUE, x, TRUE, y);
-}
-
-/**
- * gtk_layout_set_size:
- * @layout: a #GtkLayout
- * @width: width of entire scrollable area
- * @height: height of entire scrollable area
- *
- * Sets the size of the scrollable area of the layout.
- * 
- **/
-void
-gtk_layout_set_size (GtkLayout     *layout, 
-                    guint          width,
-                    guint          height)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-
-  g_object_freeze_notify (G_OBJECT (layout));
-  if (width != priv->width)
-     {
-       priv->width = width;
-       g_object_notify (G_OBJECT (layout), "width");
-     }
-  if (height != priv->height)
-     {
-       priv->height = height;
-       g_object_notify (G_OBJECT (layout), "height");
-     }
-  g_object_thaw_notify (G_OBJECT (layout));
-
-  gtk_layout_set_hadjustment_values (layout);
-  gtk_layout_set_vadjustment_values (layout);
-}
-
-/**
- * gtk_layout_get_size:
- * @layout: a #GtkLayout
- * @width: (out) (allow-none): location to store the width set on
- *     @layout, or %NULL
- * @height: (out) (allow-none): location to store the height set on
- *     @layout, or %NULL
- *
- * Gets the size that has been set on the layout, and that determines
- * the total extents of the layout’s scrollbar area. See
- * gtk_layout_set_size ().
- **/
-void
-gtk_layout_get_size (GtkLayout *layout,
-                    guint     *width,
-                    guint     *height)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  g_return_if_fail (GTK_IS_LAYOUT (layout));
-
-  if (width)
-    *width = priv->width;
-  if (height)
-    *height = priv->height;
-}
-
-/* Basic Object handling procedures
- */
-static void
-gtk_layout_class_init (GtkLayoutClass *class)
-{
-  GObjectClass *gobject_class;
-  GtkWidgetClass *widget_class;
-  GtkContainerClass *container_class;
-
-  gobject_class = (GObjectClass*) class;
-  widget_class = (GtkWidgetClass*) class;
-  container_class = (GtkContainerClass*) class;
-
-  gobject_class->set_property = gtk_layout_set_property;
-  gobject_class->get_property = gtk_layout_get_property;
-  gobject_class->finalize = gtk_layout_finalize;
-
-  container_class->set_child_property = gtk_layout_set_child_property;
-  container_class->get_child_property = gtk_layout_get_child_property;
-
-  gtk_container_class_install_child_property (container_class,
-                                             CHILD_PROP_X,
-                                             g_param_spec_int ("x",
-                                                                P_("X position"),
-                                                                P_("X position of child widget"),
-                                                                G_MININT,
-                                                                G_MAXINT,
-                                                                0,
-                                                                GTK_PARAM_READWRITE));
-
-  gtk_container_class_install_child_property (container_class,
-                                             CHILD_PROP_Y,
-                                             g_param_spec_int ("y",
-                                                                P_("Y position"),
-                                                                P_("Y position of child widget"),
-                                                                G_MININT,
-                                                                G_MAXINT,
-                                                                0,
-                                                                GTK_PARAM_READWRITE));
-  
-  /* Scrollable interface */
-  g_object_class_override_property (gobject_class, PROP_HADJUSTMENT,    "hadjustment");
-  g_object_class_override_property (gobject_class, PROP_VADJUSTMENT,    "vadjustment");
-  g_object_class_override_property (gobject_class, PROP_HSCROLL_POLICY, "hscroll-policy");
-  g_object_class_override_property (gobject_class, PROP_VSCROLL_POLICY, "vscroll-policy");
-
-  g_object_class_install_property (gobject_class,
-                                  PROP_WIDTH,
-                                  g_param_spec_uint ("width",
-                                                    P_("Width"),
-                                                    P_("The width of the layout"),
-                                                    0,
-                                                    G_MAXINT,
-                                                    100,
-                                                    GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-  g_object_class_install_property (gobject_class,
-                                  PROP_HEIGHT,
-                                  g_param_spec_uint ("height",
-                                                    P_("Height"),
-                                                    P_("The height of the layout"),
-                                                    0,
-                                                    G_MAXINT,
-                                                    100,
-                                                    GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
-  widget_class->measure = gtk_layout_measure;
-  widget_class->size_allocate = gtk_layout_size_allocate;
-
-  container_class->add = gtk_layout_add;
-  container_class->remove = gtk_layout_remove;
-  container_class->forall = gtk_layout_forall;
-}
-
-static void
-gtk_layout_get_property (GObject     *object,
-                        guint        prop_id,
-                        GValue      *value,
-                        GParamSpec  *pspec)
-{
-  GtkLayout *layout = GTK_LAYOUT (object);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  switch (prop_id)
-    {
-    case PROP_HADJUSTMENT:
-      g_value_set_object (value, priv->hadjustment);
-      break;
-    case PROP_VADJUSTMENT:
-      g_value_set_object (value, priv->vadjustment);
-      break;
-    case PROP_HSCROLL_POLICY:
-      g_value_set_enum (value, priv->hscroll_policy);
-      break;
-    case PROP_VSCROLL_POLICY:
-      g_value_set_enum (value, priv->vscroll_policy);
-      break;
-    case PROP_WIDTH:
-      g_value_set_uint (value, priv->width);
-      break;
-    case PROP_HEIGHT:
-      g_value_set_uint (value, priv->height);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_layout_set_property (GObject      *object,
-                        guint         prop_id,
-                        const GValue *value,
-                        GParamSpec   *pspec)
-{
-  GtkLayout *layout = GTK_LAYOUT (object);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  switch (prop_id)
-    {
-    case PROP_HADJUSTMENT:
-      gtk_layout_set_hadjustment (layout, g_value_get_object (value));
-      break;
-    case PROP_VADJUSTMENT:
-      gtk_layout_set_vadjustment (layout, g_value_get_object (value));
-      break;
-    case PROP_HSCROLL_POLICY:
-      if (priv->hscroll_policy != g_value_get_enum (value))
-        {
-          priv->hscroll_policy = g_value_get_enum (value);
-          gtk_widget_queue_resize (GTK_WIDGET (layout));
-          g_object_notify_by_pspec (object, pspec);
-        }
-      break;
-    case PROP_VSCROLL_POLICY:
-      if (priv->vscroll_policy != g_value_get_enum (value))
-        {
-          priv->vscroll_policy = g_value_get_enum (value);
-          gtk_widget_queue_resize (GTK_WIDGET (layout));
-          g_object_notify_by_pspec (object, pspec);
-        }
-      break;
-    case PROP_WIDTH:
-      gtk_layout_set_size (layout, g_value_get_uint (value), priv->height);
-      break;
-    case PROP_HEIGHT:
-      gtk_layout_set_size (layout, priv->width, g_value_get_uint (value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_layout_set_child_property (GtkContainer    *container,
-                               GtkWidget       *child,
-                               guint            property_id,
-                               const GValue    *value,
-                               GParamSpec      *pspec)
-{
-  switch (property_id)
-    {
-    case CHILD_PROP_X:
-      gtk_layout_move_internal (GTK_LAYOUT (container),
-                                child,
-                                TRUE, g_value_get_int (value),
-                                FALSE, 0);
-      break;
-    case CHILD_PROP_Y:
-      gtk_layout_move_internal (GTK_LAYOUT (container),
-                                child,
-                                FALSE, 0,
-                                TRUE, g_value_get_int (value));
-      break;
-    default:
-      GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_layout_get_child_property (GtkContainer *container,
-                               GtkWidget    *child,
-                               guint         property_id,
-                               GValue       *value,
-                               GParamSpec   *pspec)
-{
-  LayoutChild *layout_child;
-
-  layout_child = get_child (GTK_LAYOUT (container), child);
-  
-  switch (property_id)
-    {
-    case CHILD_PROP_X:
-      g_value_set_int (value, layout_child->x);
-      break;
-    case CHILD_PROP_Y:
-      g_value_set_int (value, layout_child->y);
-      break;
-    default:
-      GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
-      break;
-    }
-}
-
-static void
-gtk_layout_init (GtkLayout *layout)
-{
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-
-  gtk_widget_set_has_surface (GTK_WIDGET (layout), FALSE);
-
-  priv->children = NULL;
-
-  priv->width = 100;
-  priv->height = 100;
-
-  priv->hadjustment = NULL;
-  priv->vadjustment = NULL;
-}
-
-static void
-gtk_layout_measure (GtkWidget *widget,
-                    GtkOrientation  orientation,
-                    int             for_size,
-                    int            *minimum,
-                    int            *natural,
-                    int            *minimum_baseline,
-                    int            *natural_baseline)
-{
-  *minimum = *natural = 0;
-}
-
-
-static void
-gtk_layout_size_allocate (GtkWidget *widget,
-                          int        width,
-                          int        height,
-                          int        baseline)
-{
-  GtkLayout *layout = GTK_LAYOUT (widget);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  GList *tmp_list;
-  int scroll_x = 0;
-  int scroll_y = 0;
-
-  tmp_list = priv->children;
-
-  if (priv->hadjustment)
-    scroll_x = - gtk_adjustment_get_value (priv->hadjustment);
-
-  if (priv->vadjustment)
-    scroll_y = - gtk_adjustment_get_value (priv->vadjustment);
-
-  while (tmp_list)
-    {
-      LayoutChild *child = tmp_list->data;
-      GtkAllocation allocation;
-      GtkRequisition requisition;
-
-      tmp_list = tmp_list->next;
-
-      allocation.x = child->x + scroll_x;
-      allocation.y = child->y + scroll_y;
-
-      gtk_widget_get_preferred_size (child->widget, &requisition, NULL);
-      allocation.width = requisition.width;
-      allocation.height = requisition.height;
-
-      gtk_widget_size_allocate (child->widget, &allocation, -1);
-    }
-
-  gtk_layout_set_hadjustment_values (layout);
-  gtk_layout_set_vadjustment_values (layout);
-}
-
-/* Container methods
- */
-static void
-gtk_layout_add (GtkContainer *container,
-               GtkWidget    *widget)
-{
-  gtk_layout_put (GTK_LAYOUT (container), widget, 0, 0);
-}
-
-static void
-gtk_layout_remove (GtkContainer *container, 
-                  GtkWidget    *widget)
-{
-  GtkLayout *layout = GTK_LAYOUT (container);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  GList *tmp_list;
-  LayoutChild *child = NULL;
-
-  tmp_list = priv->children;
-  while (tmp_list)
-    {
-      child = tmp_list->data;
-      if (child->widget == widget)
-       break;
-      tmp_list = tmp_list->next;
-    }
-
-  if (tmp_list)
-    {
-      gtk_widget_unparent (widget);
-
-      priv->children = g_list_remove_link (priv->children, tmp_list);
-      g_list_free_1 (tmp_list);
-      g_free (child);
-    }
-}
-
-static void
-gtk_layout_forall (GtkContainer *container,
-                  GtkCallback   callback,
-                  gpointer      callback_data)
-{
-  GtkLayout *layout = GTK_LAYOUT (container);
-  GtkLayoutPrivate *priv = gtk_layout_get_instance_private (layout);
-  LayoutChild *child;
-  GList *tmp_list;
-
-  tmp_list = priv->children;
-  while (tmp_list)
-    {
-      child = tmp_list->data;
-      tmp_list = tmp_list->next;
-
-      (* callback) (child->widget, callback_data);
-    }
-}
-
-/* Callbacks */
-
-static void
-gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
-                               GtkWidget     *layout)
-{
-  gtk_widget_queue_allocate (layout);
-}
diff --git a/gtk/gtklayout.h b/gtk/gtklayout.h
deleted file mode 100644 (file)
index 272a025..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/* GTK - The GIMP Toolkit
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * GtkLayout: Widget for scrolling of arbitrary-sized areas.
- *
- * Copyright Owen Taylor, 1998
- */
-
-/*
- * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GTK+ Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#ifndef __GTK_LAYOUT_H__
-#define __GTK_LAYOUT_H__
-
-
-#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
-#error "Only <gtk/gtk.h> can be included directly."
-#endif
-
-#include <gtk/gtkcontainer.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_LAYOUT            (gtk_layout_get_type ())
-#define GTK_LAYOUT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_LAYOUT, GtkLayout))
-#define GTK_LAYOUT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_LAYOUT, GtkLayoutClass))
-#define GTK_IS_LAYOUT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_LAYOUT))
-#define GTK_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_LAYOUT))
-#define GTK_LAYOUT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_LAYOUT, GtkLayoutClass))
-
-
-typedef struct _GtkLayout              GtkLayout;
-typedef struct _GtkLayoutClass         GtkLayoutClass;
-
-struct _GtkLayout
-{
-  GtkContainer parent_instance;
-};
-
-struct _GtkLayoutClass
-{
-  GtkContainerClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gtk_reserved1) (void);
-  void (*_gtk_reserved2) (void);
-  void (*_gtk_reserved3) (void);
-  void (*_gtk_reserved4) (void);
-};
-
-GDK_AVAILABLE_IN_ALL
-GType          gtk_layout_get_type        (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-GtkWidget*     gtk_layout_new             (GtkAdjustment *hadjustment,
-                                          GtkAdjustment *vadjustment);
-GDK_AVAILABLE_IN_ALL
-void           gtk_layout_put             (GtkLayout     *layout,
-                                          GtkWidget     *child_widget,
-                                          gint           x,
-                                          gint           y);
-
-GDK_AVAILABLE_IN_ALL
-void           gtk_layout_move            (GtkLayout     *layout,
-                                          GtkWidget     *child_widget,
-                                          gint           x,
-                                          gint           y);
-
-GDK_AVAILABLE_IN_ALL
-void           gtk_layout_set_size        (GtkLayout     *layout,
-                                          guint          width,
-                                          guint          height);
-GDK_AVAILABLE_IN_ALL
-void           gtk_layout_get_size        (GtkLayout     *layout,
-                                          guint         *width,
-                                          guint         *height);
-
-G_END_DECLS
-
-#endif /* __GTK_LAYOUT_H__ */
index 8fc6b91f0eb143a04e13dabeb2502bac3338dc4f..9ec10acd9a0e3de267a79c82aa748178cd897c0d 100644 (file)
@@ -259,7 +259,6 @@ gtk_public_sources = files([
   'gtkimmulticontext.c',
   'gtkinfobar.c',
   'gtklabel.c',
-  'gtklayout.c',
   'gtklayoutchild.c',
   'gtklayoutmanager.c',
   'gtklevelbar.c',
@@ -516,7 +515,6 @@ gtk_public_headers = files([
   'gtkimmulticontext.h',
   'gtkinfobar.h',
   'gtklabel.h',
-  'gtklayout.h',
   'gtklayoutchild.h',
   'gtklayoutmanager.h',
   'gtklevelbar.h',
index a8d82b8e45fc146f02aefd173c50fa491fe8df77..309a260aa6666bec5cd5ce78f0dc32751fc15828 100644 (file)
@@ -5997,86 +5997,6 @@ create_mainloop (GtkWidget *widget)
     gtk_widget_destroy (window);
 }
 
-void create_layout (GtkWidget *widget)
-{
-  GtkAdjustment *hadjustment, *vadjustment;
-  GtkLayout *layout;
-  static GtkWidget *window = NULL;
-  GtkWidget *layout_widget;
-  GtkWidget *scrolledwindow;
-  GtkWidget *button;
-
-  if (!window)
-    {
-      gchar buf[16];
-
-      gint i, j;
-      
-      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-      gtk_window_set_display (GTK_WINDOW (window),
-                             gtk_widget_get_display (widget));
-
-      g_signal_connect (window, "destroy",
-                       G_CALLBACK (gtk_widget_destroyed),
-                       &window);
-
-      gtk_window_set_title (GTK_WINDOW (window), "Layout");
-      gtk_widget_set_size_request (window, 200, 200);
-
-      scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
-      gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow),
-                                          GTK_SHADOW_IN);
-      gtk_scrolled_window_set_placement (GTK_SCROLLED_WINDOW (scrolledwindow),
-                                        GTK_CORNER_TOP_RIGHT);
-
-      gtk_container_add (GTK_CONTAINER (window), scrolledwindow);
-
-      layout_widget = gtk_layout_new (NULL, NULL);
-      layout = GTK_LAYOUT (layout_widget);
-      gtk_container_add (GTK_CONTAINER (scrolledwindow), layout_widget);
-
-      /* We set step sizes here since GtkLayout does not set
-       * them itself.
-       */
-      hadjustment = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (layout));
-      vadjustment = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (layout));
-      gtk_adjustment_set_step_increment (hadjustment, 10.0);
-      gtk_adjustment_set_step_increment (vadjustment, 10.0);
-      gtk_scrollable_set_hadjustment (GTK_SCROLLABLE (layout), hadjustment);
-      gtk_scrollable_set_vadjustment (GTK_SCROLLABLE (layout), vadjustment);
-
-      gtk_layout_set_size (layout, 1600, 128000);
-
-      for (i=0 ; i < 16 ; i++)
-       for (j=0 ; j < 16 ; j++)
-         {
-           sprintf(buf, "Button %d, %d", i, j);
-           if ((i + j) % 2)
-             button = gtk_button_new_with_label (buf);
-           else
-             button = gtk_label_new (buf);
-
-           gtk_layout_put (layout, button, j*100, i*100);
-         }
-
-      for (i=16; i < 1280; i++)
-       {
-         sprintf(buf, "Button %d, %d", i, 0);
-         if (i % 2)
-           button = gtk_button_new_with_label (buf);
-         else
-           button = gtk_label_new (buf);
-
-         gtk_layout_put (layout, button, 0, i*100);
-       }
-    }
-
-  if (!gtk_widget_get_visible (window))
-    gtk_widget_show (window);
-  else
-    gtk_widget_destroy (window);
-}
-
 static void
 show_native (GtkWidget *button,
              GtkFileChooserNative *native)
@@ -6486,7 +6406,6 @@ struct {
   { "image", create_image },
   { "key lookup", create_key_lookup },
   { "labels", create_labels },
-  { "layout", create_layout },
   { "listbox", create_listbox },
   { "menus", create_menus },
   { "message dialog", create_message_dialog },
index 6404cda1ae1b98f50a12cf51c975c1351c8af5bd..ae7849f1c7386616018d274a46b62ddd56e47395 100644 (file)
@@ -273,11 +273,6 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 
 G_GNUC_END_IGNORE_DEPRECATIONS
 
-      if (g_type_is_a (type, GTK_TYPE_LAYOUT) &&
-         (strcmp (pspec->name, "hadjustment") == 0 ||
-           strcmp (pspec->name, "vadjustment") == 0))
-       continue;
-
       if (g_type_is_a (type, GTK_TYPE_MESSAGE_DIALOG) &&
           (strcmp (pspec->name, "image") == 0 ||
            strcmp (pspec->name, "message-area") == 0))